/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package evaluacion;

import java.util.ArrayList;
import java.util.Random;
import soluciones.*;

/**
 *
 * @author juan
 */
public class Evaluacion {
    
    private ArrayList<Solucion> soluciones;
    private Random rand;
    
    public Evaluacion(){
        rand = new Random(System.currentTimeMillis());
        soluciones = new ArrayList<>();
        soluciones.add(new SolucionEjemplo());
        soluciones.add(new AlejandroZambrano());
        soluciones.add(new AndresValencia());
        soluciones.add(new CamiloPico());
        soluciones.add(new CarlosLizarazo());
        soluciones.add(new DanielEscobar());
        soluciones.add(new Daniel_Clavijo());
        soluciones.add(new GabrielLascano());
        soluciones.add(new JonathanRamirez());
        soluciones.add(new LuisanaRojas());
        soluciones.add(new SolucionSergioRamirez());
        soluciones.add(new Jorge_luis_Garcia());
        
        
    }
    
    public void listarIngenieros(){
        for(Solucion s: soluciones){
            System.out.println(s.getNombreIngeniero());
        }
    }
    
    public void listarDesignPatterns(){
        int c = 1;
        for(Solucion s: soluciones){
            System.out.println(c + ". " + s.getNombreDesignPattern());
         c++;     }
        
    }
    
    public void printDescripcionDesignPattern(String index){
        int i;
        try{
            i = Integer.parseInt(index);
        }catch(NumberFormatException ex){
            System.err.println("Las opciones son solo numericas");
            return;
        }
        if(i > 0 && i <= soluciones.size()){
            Solucion s = soluciones.get(i-1);
            System.out.println("  Patron de Diseno " + s.getNombreDesignPattern());
            System.out.println("  (por "+s.getNombreIngeniero()+")");
            System.out.println("  " + wrap( s.getDescripcionDesignPattern() ) );
        }else{
            System.err.println("Numero equivocado. Por favor intentar nuevamente.");
        }
    }
    
    public void printSabiasQue(){
        int i = rand.nextInt(soluciones.size());
        Solucion s = soluciones.get(i);
        System.out.println("Sabias que... ");
        System.out.println("  " + wrap(s.getComentarioRepositorio()));
        System.out.println("  (por "+s.getNombreIngeniero()+")");
    }
    
    public int size(){
        return soluciones.size();
    }
    
    private String wrap(String s){
        StringBuilder sb = new StringBuilder(s);
        int i = 0;
        int lenght = 80;
        while (i + lenght < sb.length() && (i = sb.lastIndexOf(" ", i + lenght)) != -1) {
            sb.replace(i, i + 1, System.lineSeparator()+"  ");
        }
        return sb.toString();
    }
    
}
